home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (C) 1994, Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- * the contents of this file may not be disclosed to third parties, copied or
- * duplicated in any form, in whole or in part, without the prior written
- * permission of Silicon Graphics, Inc.
- *
- * RESTRICTED RIGHTS LEGEND:
- * Use, duplication or disclosure by the Government is subject to restrictions
- * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- * rights reserved under the Copyright Laws of the United States.
- */
- #ifndef _VCAL_
- #define _VCAL_
-
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <Vk/VkWindow.h>
- #include "Entry.h"
- #include "Utils.h"
-
- #define VERSION_NUMBER 5
- #define DEFAULT_FILENAME "~/.vcal"
-
- class DayView;
- class MonthOverview;
- class WeekOverview;
- class MemoryInfo;
- class RepeatingEntry;
- class VkRepeatButton;
- class VkPopupMenu;
- class VkMenu;
- class PrefDialog;
- class Preferences;
- class PrintPS;
- class VkQuestionDialog;
- class VkPrefToggle;
- class VkPrefRadio;
-
- class VCal : public VkWindow {
-
- public:
-
- VCal(const char *docName);
- ~VCal();
-
- virtual const char* className();
- // virtual void show();
-
- void deleteDayView(DayView *obj);
- void dayViewChanged(DayView *obj, Entry *entry, Entry *oldEntry);
- void addRepeatingEntry(RepeatingEntry *rentry);
- void removeRepeatingEntry(RepeatingEntry *rentry);
- void selectDay(int day, int month, int year);
- void selectToday() { selectDay(nowDay, nowMonth, nowYear); }
- void prefChanged();
- Pixel annotateColor() { return annotateBg; }
- Pixel normalColor() { return dayAreaBg; }
- Pixel foregroundColor() { return dayAreaFg; }
- Pixel nonHighlightColor() { return nonHighlight; }
- void saveAsTextMenu(Boolean todayDefault, VkSimpleWindow *parent,
- int day, int month, int year);
- MemoryInfo *findDateInfo(int day, int month, int year);
- RepeatingEntry *getRepeatingEntries() { return repeatingEntries; }
- XmFontList getLabelFont() { return labelFont; }
- Pixmap getTile() { return tile; }
- void getToday(int *day, int *month, int *year);
- void displayWeekOverview();
- DayView *getDayView() { return dayView; }
- void emitDay(FILE *fd, int day, int month, int year);
- void emitWeek(FILE *fd, int day, int month, int year);
- void emitMonth(FILE *fd, int day, int month, int year);
- void initCollect();
- void collectSingleEntry(Entry *entry);
- int collectedCount();
- void sortCollection();
- Entry *collectedEntry(int index) { return entries[index]; }
- PrintPS *getPrint();
-
- protected:
-
- void updateDisplay(Boolean read);
- Boolean okToQuit();
- virtual Widget setUpInterface(Widget parent);
- virtual void handleWmDeleteMessage();
- void afterRealizeHook();
- void fileMenu(VkMenu *menu);
- void displayMenu(VkMenu *menu);
- void monthMenu(VkMenu *menu);
- void helpMenu(VkMenu *menu);
- void createDayArea(Widget parent);
- void createDayWidgets(Widget parent);
- void setDisplayDate(int day, int month, int year);
- void displayDays(int offset, int num);
- void displayHeader(int day, int month, int year);
- void handleTimeOut();
- void intervalUpdate();
- void checkDate(struct tm *now);
- void updateClock(struct tm *now);
- void updateTheIconName(struct tm *now);
- void displayToday();
- void doMonthPrev(Widget w, XtPointer client_data, XtPointer call_data);
- void doMonthNext(Widget w, XtPointer client_data, XtPointer call_data);
- void daySelect(int day);
- void weekSelect(int day);
- void annotateDays(int num);
- Boolean readFile();
- Boolean readDay(FILE *fd, MemoryInfo *parent, int version);
- void scheduleWriteFile();
- Boolean writeFile();
- void loadMenu();
- void saveAsMenu();
- void saveAsTextOK();
- void saveAsTextCancel();
- void displayMonthOverview();
- void displayWeekOverview(int day, int month, int year);
- void monthPrint();
- void prefMenu();
- void factoryMenu();
- void checkAlarms(int t);
- void checkDayAdvanceAlarms();
- void postAlarm(Entry *entry, int day, int month, int year,
- Boolean late = False);
- void clearData();
- void selectMonth(int month);
- void resizeDay();
- void displayActionsPopup(XButtonPressedEvent *);
- void updateFileStat();
- void checkFileStat();
- Boolean fileChanged();
- void inhibitCheckFile() { checkInhibited = True; }
- void allowCheckFile() { checkInhibited = False; }
- void checkFileSoon();
- void markTodayFired(struct tm *now, Boolean lates);
- void snoozeAlarm(Entry *entry);
- void handleSnooze(XtIntervalId id);
- void alarmDismiss(EntryAlarmInfo *info);
- void alarmDelete(EntryAlarmInfo *info);
- void alarmSnooze(EntryAlarmInfo *info);
- void scheduleDialogDelete(VkQuestionDialog *dialog);
- void handleEntryAlarm(Entry *entry, int day, int month, int year,
- Boolean late = False);
- void sendMailNotification(Entry *entry, int day, int month, int year,
- Boolean late = False);
- Boolean emitSingleDay(FILE *fd, int day, int month, int year,
- Boolean headerAlways, Boolean formatYear,
- char *prefix);
- void emitCollectedEntries(FILE *fd);
- void changeDayView(int day, int month, int year);
-
- static void load_menu(Widget w, XtPointer client_data, XtPointer call_data);
- static void save_menu(Widget w, XtPointer client_data, XtPointer call_data);
- static Boolean write_file(XtPointer client_data);
- static void saveas_menu(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void save_text(Widget w, XtPointer client_data, XtPointer call_data);
- static void display_overview(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void week_overview(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void month_print(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void savetext_ok(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void savetext_cancel(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void pref_menu(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void factory_menu(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void quit_menu(Widget w, XtPointer client_data, XtPointer call_data);
- static void save_quit(Widget w, XtPointer client_data, XtPointer call_data);
- static void timeout_proc(XtPointer client_data, XtIntervalId *id);
- static void snooze_proc(XtPointer client_data, XtIntervalId *id);
- static void month_select(Widget w, XtPointer client_data, XEvent *event);
- static void day_select(Widget w, XtPointer client_data, XtPointer call_data);
- static void month_popup(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void resize_day(Widget w, XtPointer client_data, XEvent *event,
- Boolean *);
- static Boolean check_file(XtPointer client_data);
- static Boolean dialog_delete(XtPointer client_data);
- static void alarm_dismiss(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void alarm_delete(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void alarm_snooze(Widget w, XtPointer client_data,
- XtPointer call_data);
-
- Widget form, monthHeader, dayArea;
- Widget dayHeaders[DAYS_IN_WEEK], dayWidgets[MAX_DAYS], clockLabel, hidden;
- VkPopupMenu *actionsPopup;
- VkRepeatButton *monthPrev, *monthNext;
- int month, year, nowDay, nowMonth, nowYear;
- Pixel dayAreaBg, dayAreaFg, nonHighlight;
- Boolean displayingCurrent;
- DayView *dayView;
- MonthOverview *monthOverview;
- WeekOverview *weekOverview;
- MemoryInfo *dayInfo, *today;
- int numDays, numRepeats;
- Widget annotateButton, normalButton;
- int dayOffset;
- Boolean dirty;
- RepeatingEntry *repeatingEntries;
- Dimension buttonBorder;
- struct stat lastFileStat;
- Boolean checkInhibited;
- Boolean updating;
- Preferences *pref;
- Boolean showLates;
- PrefDialog *prefDialog;
- Boolean iconIsTime, iconIsDate;
- Pixel annotateBg;
- VkPrefRadio *radioText;
- VkPrefToggle *dayText, *weekText, *monthText;
- int saveDay, saveMonth, saveYear;
- int numCollect;
- Entry **entries;
- XmFontList labelFont;
- Pixmap tile;
- PrintPS *print;
- XtWorkProcId writeID;
- };
-
- #endif
-